﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using PTExpress.Models;
using DTO;
using DAO;

namespace PTExpress.Controllers
{
    [Authorize]
    public class QLNhanVienController : Controller
    {
        public IFormsAuthenticationService FormsService { get; set; }
        public Dictionary<int, string> Loai;
        
        public QLNhanVienController()
            : base()
        {
            Loai = new Dictionary<int, string>();
            Loai.Add(1, "Nhân viên bán vé");
            Loai.Add(2, "Nhân viên quản lý");
            Loai.Add(3, "Nhân viên tin học");
            this.ViewData.Add("Loai", Loai);

            IEnumerable<SelectListItem> lsELoai = NhanVienDTO.GetListLoai();
            this.ViewData.Add("lsELoai", lsELoai);
        }
        //
        // GET: /QLNhanVien/

        public ActionResult Index()
        {
            NhanVienDAO nhanvienDAO = new NhanVienDAO();
            List<NhanVienDTO> ls = nhanvienDAO.GetAll();
            this.ViewData.Add("dsNhanVien", ls);
            return View();
        }

        //
        // GET: /QLNhanVien/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /QLNhanVien/Create

        public ActionResult Them()
        {
            return View();
        } 

        //
        // POST: /QLNhanVien/Create

        [HttpPost]
        public ActionResult Them(NhanVien model)
        {
            try
            {
                ViewData["ModelState"] = ModelState.IsValid;

                bool thanhCong = false;
                if (ModelState.IsValid)
                {
                    NhanVienDAO nhanvienDAO = new NhanVienDAO();
                    if (nhanvienDAO.CheckUsername(model.Tendangnhap))
                    {
                        ModelState.AddModelError("TenDangNhap", "Trùng tên đăng nhập, vui lòng chọn một tên khác chưa sử dụng.");
                        ViewData["ModelState"] = false;
                        return View(model);
                    }

                    if (nhanvienDAO.CheckEmail(model.Email))
                    {
                        ModelState.AddModelError("Email", "Trùng email, vui lòng chọn một email khác chưa sử dụng.");
                        ViewData["ModelState"] = false;
                        return View(model);
                    }

                    NhanVienDTO nhanvienDTO = new NhanVienDTO();
                    nhanvienDTO.TenDangNhap = model.Tendangnhap;
                    nhanvienDTO.MatKhau = model.Matkhau;
                    nhanvienDTO.Email = model.Email;
                    nhanvienDTO.Loai = model.Loai;
                    thanhCong = nhanvienDAO.AddNew(nhanvienDTO);
                    if (thanhCong)
                    {
                        return RedirectToAction("Index", "QLNhanVien");
                    }
                }
                ViewData["ThanhCong"] = thanhCong;
                return View(model);
            }
            catch
            {
                return View();
            }
        }
        
        //
        // GET: /QLNhanVien/Edit/5
 
        public ActionResult Sua(int id)
        {
            NhanVien model = new NhanVien();
            NhanVienDAO nhanvienDAO = new NhanVienDAO();
            NhanVienDTO nhanvienDTO = nhanvienDAO.getById(id);
            ViewData["TenDangNhap"] = nhanvienDTO.TenDangNhap;
            model.Id = id;
            model.Tendangnhap = nhanvienDTO.TenDangNhap;
            model.Matkhau = nhanvienDTO.MatKhau;
            model.Email = nhanvienDTO.Email;
            model.Loai = nhanvienDTO.Loai;

            return View(model);
        }

        //
        // POST: /QLNhanVien/Edit/5

        [HttpPost]
        public ActionResult Sua(int id, NhanVien model)
        {
            NhanVienDAO nhanvienDAO = new NhanVienDAO();
            NhanVienDTO nhanvienDTO = nhanvienDAO.getById(id);
            ViewData["TenDangNhap"] = nhanvienDTO.TenDangNhap;
            ViewData["ModelState"] = ModelState.IsValid;

            bool thanhCong = false;
            if (ModelState.IsValid)
            {
                nhanvienDTO.TenDangNhap = model.Tendangnhap;
                nhanvienDTO.MatKhau = model.Matkhau;
                nhanvienDTO.Email = model.Email;
                nhanvienDTO.Loai = model.Loai;
                thanhCong = nhanvienDAO.Edit(nhanvienDTO);
            }
            ViewData["ThanhCong"] = thanhCong;
            return View(model);
        }

        //
        // GET: /QLNhanVien/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /QLNhanVien/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
